<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>Mine Sweeper Clone: Mine Sweeper Clone</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Mine Sweeper Clone
   &#160;<span id="projectnumber">0.9</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generato da Doxygen 1.8.4 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Cerca');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>Pagina&#160;Principale</span></a></li>
      <li><a href="pages.html"><span>Pagine&#160;collegate</span></a></li>
      <li><a href="annotated.html"><span>Classi</span></a></li>
      <li><a href="files.html"><span>File</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Cerca" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>Tutto</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classi</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>File</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Funzioni</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variabili</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Tipi enumerati (enum)</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Valori del tipo enumerato</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Definizioni</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pagine</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Mine Sweeper Clone </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><div class="image">
<img src="snapshot.png" alt="snapshot.png"/>
</div>
<p>Il campo di gioco consiste in un campo rettangolare (o quadrato) a sua volta suddiviso in tanti piccoli quadrati. Ogni quadrato viene ripulito, o scoperto, cliccando su di esso. Se un quadrato contiene una mina, quando sarà cliccato la mina esploderà e farà terminare il gioco. Se il quadrato non contiene una mina, possono accadere due eventi. Se appare un numero esso indica la quantità di quadrati adiacenti (inclusi quelli in diagonale) che contengono mine. Se non appare nessun numero, in questo caso il gioco ripulisce automaticamente i quadrati adiacenti a quello vuoto (fino a quando non conterrano un numero). Si vince la partita quando tutti i quadrati che non contengono mine saranno scoperti.</p>
<p>Il giocatore può segnare ogni quadrato in cui crede che sia presente una mina con una bandiera, cliccando su di esso con il tasto destro.</p>
<div align="right"><em>tratto da wikipedia</em></div><p><br/>
</p>
<hr/>
<p><br/>
</p>
<p><b>Linee di massima di funzionamento</b></p>
<p>All'avvio del programma, viene invocata la funziona <a class="el" href="minesweeperclone_8cc.html#a0ddf1224851353fc92bfbff6f499fa97" title="MAIN. ">main</a> che si occupa principalmente di inizializzare i widgets delle varie finestre e di creare una prima griglia 9x9 (<a class="el" href="minesweeperclone_8cc.html#a0a2c87b121f132ebdc39c0f755230dfd" title="Crea una nuova griglia sulla finestra. ">create_new_grid</a>). <br/>
 A questo punto il programma resta in attesa che venga premuta una qualsiasi casella della griglia che scaturisce l'evento <a class="el" href="minesweeperclone_8cc.html#a8b2cd84658532d74eb2203d77d4ded43" title="Evento invocato quando viene cliccata la casella. ">on_button_press_event</a>. In questo evento:</p>
<ul>
<li>se il tasto premuto è quello destro, viene chiamata la funzione <a class="el" href="grid__data_8h.html#a1ad9e693abaeb2d138bd4d8d2502dc83" title="Esegui procedure per tasto sinistro su casella. ">button_left_click</a> che cambia ciclicamente lo stato della casella in <a class="el" href="grid__data_8h.html#ac60e672db340e106d182c145915ff6ecacd6668600e27b9f0aa8b04f741701609" title="Normale (stato iniziale, non premuto) ">BS_NORMAL</a> (casella normale), <a class="el" href="grid__data_8h.html#ac60e672db340e106d182c145915ff6eca33c4c0747ae46eff3bc6662664057174" title="Contenente una mina. ">BS_CHECKED</a> (casella contrassegnata come contenente una mina) e <a class="el" href="grid__data_8h.html#ac60e672db340e106d182c145915ff6eca5728751a2b2236f7444d73c80a21c1ea" title="Probabilmente contenente una mina. ">BS_MAYBE</a> (casella contrassegnata come probabilmente contenente una mina)</li>
<li>se il tasto premuto è quello sinistro, viene chiamata la funzione <a class="el" href="grid__data_8h.html#a1b40bb00f792aa5ebe918302f6808b32" title="Esegui procedure per tasto destro su casella. ">button_right_click</a> che rivela il contenuto della casella (solo nel caso in cui la casella non abbia uno stato <a class="el" href="grid__data_8h.html#ac60e672db340e106d182c145915ff6eca33c4c0747ae46eff3bc6662664057174" title="Contenente una mina. ">BS_CHECKED</a>) ed eventualmente anche delle caselle adiacenti (<a class="el" href="grid__data_8h.html#a7551336e59c21e051318955f1db81979" title="Cambia stato alle caselle adiacenti a quella data. ">button_reveal</a>).</li>
</ul>
<p><br/>
</p>
<p><b>Informazioni strutturali</b></p>
<p>Il programma è stato suddiviso nei seguenti moduli:</p>
<ul>
<li><a class="el" href="common_8h.html" title="Header del modulo per la gestione delle parti comuni. ">common.h</a>: vengono definiti i parametri condizionali di compilazione, i percorsi delle risorse neccessarie al corretto funzionamento del software e le funzioni comuni</li>
<li><a class="el" href="debug_8h.html" title="Header file contenente la gestione delle funzioni e delle macro per il debug. ">debug.h</a>: vengono gestite le funzioni e le macro per il debug</li>
<li><a class="el" href="grid__data_8h.html" title="Header del modulo per la gestione della griglia principale. ">grid_data.h</a>: viene definita la struttura portante <a class="el" href="structgrid__s.html" title="Struttura principale contenente tutte le caselle e lo stato corrente della partita. ">grid_s</a> che gestisce i dati principali della griglia e le relative caselle</li>
<li><a class="el" href="records__io_8h.html" title="Header del modulo per la gestione del file dei records. ">records_io.h</a>: gestisce il caricamento/salvataggio dei records del gioco</li>
<li><a class="el" href="xpm__images_8h.html" title="Header del modulo per la gestione delle immagini utilizzate dal programma. ">xpm_images.h</a>: vengono gestiti i files di immagini che verranno caricati, e resi disponibili al programma</li>
<li><a class="el" href="xpm__images__list_8h.html" title="File contenente la lista delle immagini da includere nell&#39;eseguibile. ">xpm_images_list.h</a>: viene gestita la lista di immagini da includere nell'eseguibile</li>
</ul>
<p>La funzione <a class="el" href="minesweeperclone_8cc.html#a0ddf1224851353fc92bfbff6f499fa97" title="MAIN. ">main</a> è contenuta nel modulo <a class="el" href="minesweeperclone_8cc.html" title="Modulo contenente principalmente la funzione main, la gestione degli eventi dei widgets utilizzati da...">minesweeperclone.cc</a>.</p>
<p><br/>
</p>
<dl class="section note"><dt>Nota</dt><dd>Si sono riscontrati degli errori nell'apertura del file .glade negli ambienti con Glade 3.14.2 e Xubuntu 13.10.<br/>
 E' un bug noto che si presenta quando si tenta di aprire un file .glade contenente delle dialog. <br/>
 Una soluzione testata è l'aggiornamento non ufficiale di Glade tramite i seguenti comandi: <br/>
 <br/>
 <div class="fragment"><div class="line">sudo add-apt-repository ppa:jfi/test</div>
<div class="line">sudo apt-<span class="keyword">get</span> update</div>
<div class="line">sudo apt-<span class="keyword">get</span> upgrade</div>
</div><!-- fragment --></dd></dl>
<p><br/>
 <br/>
</p>
<dl class="section author"><dt>Autore</dt><dd>Adrian Sassatelli </dd></dl>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generato Gio 3 Apr 2014 21:57:37 per Mine Sweeper Clone da &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</small></address>
</body>
</html>
